package com.atguigu.admin.utils;

/**
 * @author 杨林
 * @create 2023-09-16 16:12 星期六
 * description:
 */

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 自定义一个MD5工具类
 */

public class MD5Utils {
    
    //将字节数组转换成十六进制字符串
    private static String byTesToHex(byte[] bytes){
        StringBuilder hexString = new StringBuilder();
        for (byte b : bytes) {
            //Integer.toHexString()：这是将整数值转换为十六进制字符串的方法
            //Integer.toHexString(0xFF & b);
            //  作用：将字节数组中的一个字节转换成两位的十六进制字符串表示
            String hex = Integer.toHexString(0xFF & b);
            if (hex.length() == 1){
                hexString.append('0');
            }
            hexString.append(hex);
        }
        return hexString.toString();
    }
    
    
    //计算字符串的MD5哈希值
    public static String md5(String input) {
        try {
            //获取MD5哈希计算实例
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            //计算输入字符串的MD5哈希，返回一个字节数组
            byte[] messageDigest = md5.digest(input.getBytes());
            return byTesToHex(messageDigest);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
    
}
